/*
  Programa GEFE - Gestión de eventos lúdicos.
  Copyright (C) 2010  Antonio Ramírez Marti

  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

#include "dialogreport.h"
#include "ui_dialogreport.h"

#include <QFileDialog>
#include <QTextDocumentWriter>
#include <QPrintDialog>

DialogReport::DialogReport(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::DialogReport)
{
    ui->setupUi(this);
    setup();
}

DialogReport::~DialogReport()
{
    delete ui;
}

void DialogReport::changeEvent(QEvent *e)
{
    QDialog::changeEvent(e);
    switch (e->type()) {
    case QEvent::LanguageChange:
        ui->retranslateUi(this);
        break;
    default:
        break;
    }
}

void DialogReport::setup()
{
    connect(ui->pdfButton,SIGNAL(clicked()),this,SLOT(savePDF()));
    connect(ui->odtButton,SIGNAL(clicked()),this,SLOT(saveODT()));
    connect(ui->printButton,SIGNAL(clicked()),this,SLOT(savePrint()));
}

void DialogReport::savePDF()
{
    QString archivoSalida=QFileDialog::getSaveFileName(this,"Archivo de reporte",QString(),QString("Archivos PDF (*.pdf)"));

    QPrinter printer;

    if(!archivoSalida.isNull())
    {
        printer.setOutputFileName(archivoSalida);
        printer.setOutputFormat(QPrinter::PdfFormat);

        ui->textEdit->document()->print(&printer);
    }
}

void DialogReport::saveODT()
{
    QString archivoSalida=QFileDialog::getSaveFileName(this,"Archivo de reporte",QString(),QString("Archivos ODT (*.odt)"));

    QTextDocumentWriter writer;

    if(!archivoSalida.isNull())
    {
        writer.setFormat("ODF");
        writer.setFileName(archivoSalida);
        writer.write(ui->textEdit->document());
    }
}

void DialogReport::setDocument(QTextDocument *documento)
{
    ui->textEdit->setDocument(documento);
}

void DialogReport::savePrint()
{
    QPrintDialog *dialog= new QPrintDialog(this);

    connect(dialog,SIGNAL(accepted(QPrinter*)),this,SLOT(imprimir(QPrinter*)));

    dialog->exec();
}

void DialogReport::imprimir(QPrinter *impresora)
{
    ui->textEdit->document()->print(impresora);
}
